In storage technology, a storage appliance is one type of computer that provides services relating to the organization and storage of information or data on storage devices such as, for example, disk drives (“disks”). In other words, a storage appliance is adapted to store and retrieve data on behalf of one or more client processing systems (“clients” or “hosts”) in response to external requests received from the hosts. A storage appliance can provide clients with file-level access to data stored in the storage devices. A storage appliance can also provide clients with block-level access to stored data, or with both file-level access and block-level access. For convenience, a storage appliance will be described herein, for the most part, in terms of the former, though the description herein will have application to the latter types of storage appliances as well, as will be apparent to those of ordinary skill in the art in light of the description that follows. Examples of such storage appliances include, but are not limited to, a file server or another type of computing device that provides storage services using a file system to respond to file-oriented data access requests (“filer”). A storage appliance includes a storage operating system that implements the file system to logically organize the information as a hierarchical structure of directories and files on the disks. Each file on a disk may be implemented as a set of data structures, e.g., disk blocks, which are configured to store information. A directory may be implemented as a formatted file in which information by other files and directories is stored.
An implemented disk storage for a storage appliance typically has one or more storage “volumes” which are a collection of physical storage disks and which define an overall logical arrangement of storage space. In other words, a storage volume is a logical container that includes a collection of disks. Therefore, the collection of disks is grouped (assimilated) into the storage volume. Each storage volume is generally associated with a file system.
One or more host computers (hosts) can share the storage resources (e.g., storage space) of storage appliances in a network. The process of allocating the storage space to a host is known as “storage provisioning”. The host can access and use the storage space that has been allocated to the host. The same storage space can be allocated to different hosts, and as a result, the different hosts can use the same storage space. Different storage space can also be allocated to different hosts, so that each host is allocated with a unique storage space.
When the disks in a LUN (logical unit number) is allocated to one or more hosts, the RAID (Redundant Array of Independent or Inexpensive Disks systems) level and the operating system (OS) type is specified for the LUN. LUNs are discussed in additional details below. The RAID level indicates the RAID format of the data that is stored in the LUN (e.g., the data may be formatted as, for example, striped data or concatenated data). Details of the RAID technology are well-known to those skilled in the art and are disclosed in, for example, “A Case for Redundant Arrays of Inexpensive Disks (RAID)”, by D. A. Patterson, et al., Proceedings of the International Conference on Management of Data (SIG-MOD), June 1988. The OS type would indicate the operating system type (e.g., Solaris, WINDOWS, HP-UX, AIX, LINUX, IMAGE, etc.) of a host computer that would be accessing the LUN. As known to those skilled in the art, the OS type will determine the LUN format and data format in the LUN (e.g., the LUN geometry, prefix, and suffix) that are compatible for the OS type that will access the LUN. The RAID level and the OS type are specified for a LUN by use of attributes in data structures in the LUN.
However, current methods for writing data into the storage spaces can, in turn, lead to inefficient read operations when reading data from the storage spaces, particularly as the sizes of data being written generally continue to increase. Therefore, the current technology is limited in its capabilities and suffers from at least the above constraints and deficiencies